let v = 123 + '123';
// 任意类型与字符串相加，相当于拼接字符串
console.log("123 + '123' =",v); // 123123
console.log("true + '123' =",true + '123'); // true123
console.log("null + '123' =",null + '123'); // null123
console.log("'123' + undefined =",'123' + undefined); // undefined123
console.log("123n + '123' =",123n + '123'); // 123123

// 数值与布尔进行数学运算
// true相当于1
console.log("true + 1 =",true + 1); // 2
console.log("true * 3 =",true * 3); // 3
// false相当于0
console.log("false + 1 =",false + 1); // 1
console.log("false * 3 =",false * 3); // 0

// 字符与数值进行乘除运算，也会隐式转化：这也是一个将字符类型转为数值的技巧
console.log("123 * 1 + 123 =",123 * 1 + 123); // 246
console.log("'9' % 2 =",9 % 2); // 1
// 不能转为数值的字符串，实际上也转为了数值，最后结果为NaN
console.log("'九' / 2 =",'九' / 2); // NaN

// 大整数与其它类型做数学运算时，其它数据类型会先转数值，然后运行出错
// console.log("123n + true' =",123n + true); // TypeError
// console.log("123n * '2' =",123n * 2); // TypeError